package com.combetter.changxing.ui.fragment;


/**
 * 设备Fragment
 * <p>
 * Created by 深圳唐龙飞讯科技有限公司 on 2018/6/7.
 */
public class FacilityFragment {
// extends BleScanFragment<FragmentFacilityBinding, FacilityViewModel> implements FacilityAdapter.FacilityInterface, FacilityListAdapter.FacilityListInterface {
//    public static int REUEST_CODDE = 300;
//    public static int RECHRISTEN_CODDE = 400;
//    private FacilityAdapter alreadyAdapter;
//    private FacilityListAdapter listAdapter;
//    private RxPermissions rxPermissions;
//    //判断FacilityFragment是否在当前显示
//    private boolean isShow = false;
//
//
////    private ScanFacilityDialog2 mDialog;
//
//    private final Handler mScanHandler = new Handler();
//    private final static long SCAN_PERIOD = 10 * 1000;
//    LoadingDialog loadingDialog;
//    boolean isFlag = true;
//
//    @Override
//    public int setLayout() {
//        EventBus.getDefault().register(this);
//        return R.layout.fragment_facility;
//    }
//
//    @Override
//    public void init() {
//        super.init();
//
//        loadingDialog = new LoadingDialog(mContext);
//        rxPermissions = new RxPermissions(getActivity());
//
//        alreadyAdapter = new FacilityAdapter(mContext, null);
//        mBinding.recycler.setLayoutManager(new LinearLayoutManager(mContext, LinearLayoutManager.VERTICAL, false));
//        mBinding.recycler.setAdapter(alreadyAdapter);
//        alreadyAdapter.setFacilityClickListener(this);
//
//        listAdapter = new FacilityListAdapter(null);
//        mBinding.listRecycler.setLayoutManager(new LinearLayoutManager(mContext, LinearLayoutManager.VERTICAL, false));
//        mBinding.listRecycler.setAdapter(listAdapter);
//        listAdapter.setFacilityListClickListener(this);
////        dialog = new ScanFacilityDialog();
//    }
//
//    @Override
//    public Class createViewModel() {
//        return FacilityViewModel.class;
//    }
//
//    @Override
//    public void loadData() {
//        /**
//         *  扫描设备
//         */
//        RxView.clicks(mBinding.tvScan)
//                .compose(rxPermissions.ensure(Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.BLUETOOTH))
//                .subscribe(aBoolean -> {
//                    if (aBoolean) {
//                        scan();
//                    } else {
//                        ToastUtils.error("没有开启定位权限");
//                    }
//                });
//    }
//
//    @Override
//    public void onHiddenChanged(boolean hidden) {
//        super.onHiddenChanged(hidden);
//        try {
//            isShow = !hidden;
//            if (!hidden) {
////                mViewModel.selectFacility();
//            }
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//    }
//
//
//    /**
//     * 描述蓝牙设备回调
//     *
//     * @param device
//     * @param rssi
//     * @param scanRecord
//     */
//    @Override
//    public void onLeScan(BluetoothDevice device, int rssi, byte[] scanRecord) {
//        addDevice(device, rssi);
//    }
//
//    /**
//     * 扫描效果
//     */
//    public void scan() {
//        //开始扫描设备
//        mBinding.flRadar.setVisibility(View.VISIBLE);
//        mBinding.radar.setSearching(true);
//        listAdapter.getData().clear();
//        listAdapter.notifyDataSetChanged();
//        isFlag = true;
//        ToastUtils.showToastShort("搜索过程中靠近设备进行连接");
//        mScanHandler.postDelayed(() -> {
//            scanLeDevice(true);
//            mScanHandler.postDelayed(scanTask, SCAN_PERIOD);
//        }, 0);
//
//    }
//
//    private Runnable scanTask = new Runnable() {
//        @Override
//        public void run() {
//            scanLeDevice(false);
//            if (listAdapter.getData().size() == 0) {
////                mBinding.listLayout.setVisibility(View.GONE);
//                if (FacilityClient.mConnectState != BluetoothGatt.STATE_CONNECTED) {
//                    ToastUtils.showToast("没有搜索到设备");
//                }
//            } else {
////                mBinding.listLayout.setVisibility(View.VISIBLE);
//                listAdapter.notifyDataSetChanged();
//            }
//            mBinding.radar.setSearching(false);
//            mBinding.flRadar.setVisibility(View.GONE);
//        }
//    };
//
//
//    /**
//     * 过滤把符合要求的设备添加到列表
//     *
//     * @param device
//     */
//
//    private void addDevice(BluetoothDevice device, int rssi) {
//        if (device != null && device.getName() != null && device.getName().startsWith("HNB")) {
//            LogUtil.e("" + device.getName() + ", " + device.getAddress());
//
//            for (final FacilityModel advDevice : alreadyAdapter.getData()) {
//                if (device.getAddress().equals(advDevice.getIdentifier_id()) && FacilityClient.mConnectState != BluetoothGatt.STATE_CONNECTED && FacilityClient.mConnectState != BluetoothGatt.STATE_CONNECTING) {
//                    alreadyAdapter.notifyDataSetChanged();
//                    break;
//                }
//            }
//
//            for (final BluetoothDevice advDevice : listAdapter.getData()) {
//                if (device.getAddress().equals(advDevice.getAddress()) && FacilityClient.mConnectState != BluetoothGatt.STATE_CONNECTED && FacilityClient.mConnectState != BluetoothGatt.STATE_CONNECTING) {
//                    LogUtil.e("---------scan:" + device.getName() + "  mac:" + device.getAddress() + "  rssi:" + rssi);
//                    listAdapter.notifyDataSetChanged();
//                    if (rssi > -30 && isFlag) {
//                        isFlag = false;
//                        stopAndDeal();
//                        connectDeal(device.getAddress(), device.getName());
//                        break;
//                    }
//                    return;
//                }
//            }
//
//            getActivity().runOnUiThread(() -> {
//                BluetoothDevice temp = getDealList(device, alreadyAdapter.getData());//筛选是否在已配对列表中
//                if (temp != null && !listAdapter.getData().contains(temp)) {//不在配对列表中也不在搜索列表中
//                    listAdapter.addData(device);
//                    listAdapter.notifyDataSetChanged();
//                } else {
//                    listAdapter.notifyDataSetChanged();
//                }
//            });
//        }
//    }
//
//    @Subscribe(threadMode = ThreadMode.MAIN)
//    public void getEventData(EventMessage message) {
//        switch (message.getType()) {
//            /**
//             *  蓝牙连接成功
//             */
//            case "BleSuccess":
//                if (loadingDialog != null) {
//                    loadingDialog.dismiss();
//                }
//                try {
//                    listAdapter.getData().clear();
//                    listAdapter.notifyDataSetChanged();
//                    alreadyAdapter.notifyDataSetChanged();
//                    boolean flag = false;
//                    BleDevice bleDevice = null;
//                    if (message.getData() != null) {
//                        bleDevice = (BleDevice) message.getData();
//                    }
//                    if (alreadyAdapter.getData() != null && alreadyAdapter.getData().size() > 0) {
//                        for (FacilityModel model : alreadyAdapter.getData()) {
//                            if (bleDevice != null && bleDevice.getDevice().getAddress().equals(model.getIdentifier_id())) {
//                                flag = false;
//                                break;
//                            } else {
//                                flag = true;
//                            }
//                        }
//                    } else {
//                        flag = true;
//                    }
//                    if (flag && bleDevice != null) {
//                        mViewModel.insertFacility(getActivity(), bleDevice.getMac(), bleDevice.getName(), 1, 0);
//                    }
//                    if (!flag) {
////                        new Handler().postDelayed(() -> mViewModel.selectFacility(), 100);
//                    } else {
////                        new Handler().postDelayed(() -> mViewModel.selectFacility(), 500);
//                    }
//                } catch (Exception e) {
//                    e.printStackTrace();
//                }
//
//                break;
//
//            /**
//             *  已配对的设备列表回调
//             */
//            case "selectFacility":
//                if (Check.isEmpty(mViewModel.facilityList)) {
//                    mBinding.tvFacilityName.setGravity(Gravity.CENTER);
//                    mBinding.tvFacilityName.setText("当前暂无设备");
//                    mBinding.radar.setSearching(false);
////                    mBinding.scanLayout.setVisibility(View.GONE);
//
//                } else {
//                    alreadyAdapter.setNewData(mViewModel.facilityList);
//                    mBinding.tvFacilityName.setGravity(Gravity.LEFT);
//                    mBinding.tvFacilityName.setText("已配对设备");
//                }
//                alreadyAdapter.notifyDataSetChanged();
//                break;
//            case "onDisConnected":
//                if (isShow) {
////                    mViewModel.selectFacility();
//                }
//                listAdapter.getData().clear();
//                listAdapter.notifyDataSetChanged();
//                alreadyAdapter.notifyDataSetChanged();
//                if (loadingDialog != null) {
//                    loadingDialog.dismiss();
//                }
//                break;
//            case "addDeviceSuc":
//                String mac = (String) message.getData();
//                for (BluetoothDevice device : listAdapter.getData()) {
//                    if (mac.equals(device.getAddress())) {
//                        listAdapter.getData().remove(device);
//                        break;
//                    }
//                }
//                listAdapter.notifyDataSetChanged();
//                break;
//
//            case "AuthFail":
//                if (loadingDialog != null && loadingDialog.isShowing()) {
//                    loadingDialog.dismiss();
//                }
//                break;
//
//        }
//    }
//
//    /**
//     * 点击连接设备
//     *
//     * @param item
//     */
//    @Override
//    public void viewConnect(FacilityModel item) {
//        boolean someConnected = false;
//        List<BleDevice> bleDevices = BleManager.getInstance().getAllConnectedDevice();
//        for (BleDevice bean : bleDevices) {
//            if (BleManager.getInstance().isConnected(bean) && !item.getIdentifier_id().equals(bean.getMac())) {
//                someConnected = true;
//                break;
//            }
//        }
//
//        if (someConnected) {
//            ToastUtils.error("已连接设备，请断开后再进行操作");
//            return;
//        }
//        if (loadingDialog != null) {
//            loadingDialog.setMsg("鉴权中...");
//            loadingDialog.show();
//        }
//
//        FacilityDao facilityDao = MyApp.getInstance().getDatabase().facilityDao();
//        if (facilityDao == null || facilityDao.getFacilityInfoList() == null) {
//            Facility facility = new Facility();
//            facility.setFacilityAddress(item.getIdentifier_id());
//            facility.setFacilityName(item.getName());
//
////            MyApp.getInstance().getDatabase().facilityDao().insertFacility(facility);
//        }
//        FacilityClient.getClient().connect(item.getIdentifier_id(), false);
//    }
//
//    /**
//     * 断开设备连接设备
//     *
//     * @param item
//     */
//    @Override
//    public void viewDisconnect(FacilityModel item) {
//        FacilityClient.mAuthStatu = AUTH_NONE;
//        FacilityClient.getClient().disconnect();
//        MyApp.getInstance().resetFacilityInfo();
//        FacilityClient.tempBleDevices = null;
//    }
//
//    /**
//     * 重命名
//     *
//     * @param item
//     */
//    @Override
//    public void viewRename(FacilityModel item) {
//        FacilityRechristenDialog dialog = new FacilityRechristenDialog();
//        Bundle bundle = new Bundle();
//        bundle.putString("facilityName", item.getName());
//        bundle.putString("identifierId", item.getIdentifier_id());
//        bundle.putInt("mid", item.getMid());
//        dialog.setArguments(bundle);
//        dialog.setTargetFragment(FacilityFragment.this, REUEST_CODDE);
//        dialog.show(getActivity().getSupportFragmentManager(), "");
//    }
//
//    /**
//     * 取消配对
//     *
//     * @param item
//     * @param isConnect
//     */
//    @Override
//    public void viewCancelMate(FacilityModel item, boolean isConnect) {
//        if (isConnect) {
//            new Handler().postDelayed(() -> FacilityClient.getClient().disconnect(), 200);
////            MyApp.getInstance().getDatabase().facilityDao().deleteFacility(MyApp.getInstance().getFacilityInfo());
//            FacilityClient.tempBleDevices = null;
//        }
//        getActivity().runOnUiThread(() -> mViewModel.deleteFacility(getActivity(), item.getMid()));
//    }
//
//    /**
//     * 添加配对设备
//     *
//     * @param item
//     */
//    @Override
//    public void viewAdd(BluetoothDevice item) {
//        mViewModel.insertFacility(getActivity(), item.getAddress(), item.getName(), 1, 0);
//    }
//
//    private void stopAndDeal() {
//        mScanHandler.removeCallbacks(scanTask);
//        scanLeDevice(false);
//        mBinding.listLayout.setVisibility(View.VISIBLE);
//        listAdapter.notifyDataSetChanged();
//        mBinding.radar.setSearching(false);
//        mBinding.flRadar.setVisibility(View.GONE);
//    }
//
//    /**
//     * 如已在配对列表中，则不显示在搜素列表上
//     *
//     * @param device
//     * @param facilityModels
//     * @return
//     */
//    private BluetoothDevice getDealList(BluetoothDevice device, List<FacilityModel> facilityModels) {
//        BluetoothDevice tempDevice = device;
//        for (FacilityModel facilityModel : facilityModels) {
//            if ((device != null || device.getAddress() != null) && device.getAddress().equals(facilityModel.getIdentifier_id())) {
//                tempDevice = null;
//                break;
//            }
//        }
//        return tempDevice;
//    }
//
//    private void connectDeal(String mac, String name) {
//        new Handler().postDelayed(() ->
//                FacilityClient.getClient().connect(mac, false),
//                1000);
//    }
//
//
//    @Override
//    public void onActivityResult(int requestCode, int resultCode, Intent data) {
//        super.onActivityResult(requestCode, resultCode, data);
//        if (requestCode == REUEST_CODDE) {
//            scan();
////            mBinding.scanLayout.setVisibility(View.VISIBLE);
//        }
//        //重命名
//        if (requestCode == RECHRISTEN_CODDE) {
//            int mid = data.getIntExtra("mid", 0);
//            String facilityName = data.getStringExtra("facilityName");
//            String identifierId = data.getStringExtra("identifierId");
//            mViewModel.insertFacility(getActivity(), identifierId, facilityName, 2, mid);
//        }
//    }
//
//    @Override
//    public void onDestroyView() {
//        super.onDestroyView();
//        if (MyApp.getInstance().getFacilityInfo() != null) {
//            BleManager.getInstance().destroy();
//        }
//        if (EventBus.getDefault().isRegistered(this)) {
//            EventBus.getDefault().unregister(this);
//        }
//        if (loadingDialog != null) {
//            loadingDialog.dismiss();
//            loadingDialog = null;
//        }
//    }
//
//    @Override
//    public void onPause() {
//        super.onPause();
//        if (loadingDialog != null) {
//            loadingDialog.dismiss();
//        }
//    }
}
